<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[033]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>033 php做图片验证码</span></div>
<?php include 'include/top.php';?>
<div class="text">
<b>GD2库</b>
这是php中的一个画图的api，我们使用验证码时需要将这个api打开<br />
打开方法在php.ini文件中的[<strong>；extension=php_gd2.dll</strong>]前面的注释符[<strong>;</strong>]去掉即可<br />
<b>图片验证码</b>
可以有效防止恶意注册和恶意发言<br />
我们先来了解几个函数<br />
<strong>rand(最小值,最大值)</strong>随机值函数<br />
<strong>dechex(数值)</strong>转换为16进制函数<br />
<strong>imagecreatetruecolor(宽,高)</strong>创建图片函数<br />
<strong>imagecolorallocate(图片,红,绿,蓝)</strong>创建颜色函数<br />
<strong>imagestring(图片,字体,x轴,y轴,内容,颜色)</strong>图片中写入字符函数<br />
我们通过一段代码来解释如何做一个简单的验证码图片<br />
<b>由于生存图片的php文件不允许有字符输出，否则改变图片内的编码出现乱码，所以我们使用&lt;img src=''/&gt;的方式载入图片</b>
我们在file文件夹下面建立一个s033_1.php的文件，在里面写入下面的代码<br />
<div class="code">
 &lt;?php<br />
 session_start();//开启session<br />
$str='';<br />
for($i=0;$i&lt;4;$i++)//设置要图片中显示的值<br />
{<br />
$str.=dechex(rand(1,15));<br />
}<br />
$_SESSION['img']=$str;//赋值给session<br />
$img=imagecreatetruecolor(100,30);//建立一个宽100,高30的图片<br />
$bg=imagecolorallocate($img,0,0,0);//建立一个黑色的背景<br />
$uc=imagecolorallocate($img,0,255,0);//建立一个绿色的颜色<br />
imagefill($img,0,0,$bg);//填充$img从0.0坐标开始用黑色<br />
imagestring($img,rand(1,6),rand(5,65),rand(5,15),$str,$uc);在$img中加入1-6号字体,起始位置5-65和5-1的$str内容,使用$uc颜色,<br />
imagepng($img);显示图片<br />
imagedestroy($img);去除建立图片所占用的内存<br />
header('Content-type: image/png');显示图片的格式<br />
?&gt; <br />
</div>
然后我们在需要使用图片的页面填写下面的代码<br />
<div class="code">&lt;?php<br />
  if(isset($_POST['img1']))<br />
{<br />
if($_SESSION['img']==$_POST['img1'])<br />
{echo '验证码正确['.$_SESSION['img'].']&lt;br /&gt;';}<br />
else<br />
{echo '错误的验证码，正确的验证码是：【'.$_SESSION['img'].'】';} <br />
}<br />
?&gt;<br />
&lt;form name=&quot;img&quot; method=&quot;post&quot; action=&quot;study033.php&quot;&gt;<br />
&lt;img src=&quot;file/s033_1.php&quot;/&gt;&lt;br /&gt;<br />
&lt;input name=&quot;img1&quot;&gt;&lt;br /&gt;<br />
&lt;input type=&quot;submit&quot; value=&quot;提交&quot;&gt;<br />
&lt;/form&gt; </div>
我们来看效果。
<div class="effect">
<?php
if(isset($_POST['img1']))
	{
	if($_SESSION['img']==$_POST['img1'])
		{echo '验证码正确['.$_SESSION['img'].']<br />';}
	else
		{echo '错误的验证码，正确的验证码是：【'.$_SESSION['img'].'】';}	
	}
?>
<form name="img" method="post" action="study033.php">
<img src="file/s033_1.php"/><br />
<input name="img1"><br />
<input type="submit" value="提交">
</form>
 </div>
</div>



</body>
</html>
